package com.bdq.user.domain.service;

import com.bdq.user.domain.model.agg.UserAgg;
import com.bdq.user.domain.model.dto.UserDomainDTO;
import com.bdq.user.domain.model.dto.UserFollowNumDomainDTO;
import com.bdq.user.domain.model.dto.ViewRegionLevelDomainDTO;
import com.bdq.user.domain.model.dto.req.UserUpdateReqDTO;
import com.bdq.user.domain.model.dto.req.ViewRegionLevelUpdateReqDTO;
import com.bdq.user.domain.model.dto.LoginDomainDTO;

import java.util.List;

/**
 * @author malei
 * @date 2024-05-04 09:08
 */
public interface UserDomainService {

    /**
     * 用户聚合填充
     *
     * @param userMobile
     */
    void userAggFill(String userMobile, UserAgg userAgg);

    /**
     * 登录
     *
     * @param userAgg
     * @return
     */
    LoginDomainDTO login(UserAgg userAgg);

    /**
     * 登出
     *
     * @param userMobile
     * @return
     */
    Boolean logout(String userMobile);

    /**
     * 用户信息
     *
     *
     * @param userAgg
     * @return
     */
    UserDomainDTO userDetail(UserAgg userAgg);

    /**
     * 用户资料更新
     *
     * @param dto
     * @param userAgg
     * @return
     */
    Boolean userUpdate(UserUpdateReqDTO dto, UserAgg userAgg);

    /**
     * 获取浏览区域级别
     *
     * @param userAgg
     * @return
     */
    List<ViewRegionLevelDomainDTO> getViewRegionLevel(UserAgg userAgg);

    /**
     * 更新浏览区域级别
     *
     * @param dto
     * @param userAgg
     * @return
     */
    Boolean updateViewRegionLevel(ViewRegionLevelUpdateReqDTO dto, UserAgg userAgg);

    /**
     * 关注数查询
     *
     * @param userId
     * @return
     */
    UserFollowNumDomainDTO userFollowNumGet(Long userId);
}
